C语言系统化精讲

  • 第1章 课程导学 本章作为课程内容引入,主要介绍课程结构,课程的学习方法等。希望你能通过这门课程彻底掌握程序语言的“道”和“术”。 第2章 C语言必备基础 本章主要讲解演示编译环境搭建,IDE配置,调试方法,代码规范风格等内容,为课程后续内容做足准备工作。 第3章 C语言快速入门 本章核心是对C语言的基本数据类型、变量常量、运算符、分支和循环语句等必备知识进行讲解,适合零基础的同学快速上手,也适合C语言基础薄弱的同学查缺补漏。 第4章 函数与程序结构 本章讲解C语言中函数的声明、实现以及使用方法,变量的类型和作用域。本章最后还会为你定制一个经典的汉诺塔的问题来实践函数的递归。相信通过本章的学习,你就可以独立完成一些基本功能的程序开发了。 第5章 预处理和宏 本章讲解C语言的预处理和宏的使用方法,包括文件包含、条件编译、宏函数等特性的理解和应用。本章最后会带你深度对比宏和函数实现一个方便打印输出的PRINTLNF 宏。 第6章 玩转数组 本章将带你吃透C语言中的数组,包括数组在内存当中的存储形式,字符串的基本概念,数组作为函数参数传递等内容。本章最后也会带你就数组元素的排序这一经典问题进行实践,加深对数组本身的理解。 第7章 吃透指针 试看 本章将带你吃透C语言的指针,包括指针的运算、函数参数传递以及返回值的内存复制过程、动态内存分配、函数指针等特性的分析及应用。本章最后还会结合宏和指针深度剖析一个简单的交换变量值的多种实现方法以及指针版本的快速排序算法的实现。... 第8章 聚合数据类型 本章将讲解C语言的聚合数据类型,包括结构体、联合体、枚举等特性及应用,也重点剖析结构体的内存对齐特性,本章最后会结合前面的知识给出字节序判断和单链表的基本实现的案例。 第9章 字符串的应用 本章将讲解标准库中对字符串提供的支持,包括窄字符与宽字符相关的字符类型判断,字符串比较、连接、复制,原始内存的清除、复制、移动等工具函数的应用,以及窄字符与宽字符的转换函数及编码设置的方法,最后会对C99新增的restrict、C11新增的安全版本函数做分析。... 第10章 时间的应用 本章将讲解标准库中对时间提供的支持,包括计算机软件当中各类常见的时间概念,获取系统时间、日历时间的方法,时间的格式化和解析的方法等,由于各平台对时间的支持存在一定差异,我们使用条件编译实现一个跨平台的毫秒时间戳的获取函数,为你编写跨平台的代码提供思路。... 第11章 文件的输入输出 本章将讲解标准库中对文件输入输出的支持,包括文件流的概念,文件流按字符、按行、按字节读写函数的使用,并使用多个版本的文件复制的案例贯穿全章,在对比和迭代当中深刻理解不同的读写方式之间的差异,加深你对文件流缓冲等概念的理解。... 第12章 线程与并发 本章将讲解C语言标准库从C11引入的线程以及并发相关知识。线程和并发是开发人员的必备基础,本章内容除了帮助你在实践当中更好地了解诸如pthread这样的线程库以外,对于其他现代语言的学习也是非常有益的。本章最后综合所学完成处理复杂的线程返回结果、并发任务执行与函数回调两个实践案例。... 第13章 编译、链接和库 本章将基于gcc讲解C语言编译过程中的各个环节和细节,帮助你了解C语言是如何从源码一步一步编译成最后的可执行文件,也会讲解如何将自己的模块作为依赖导出,如何使用conan来管理第三方依赖,本章最后还会以C++和Java为例传授你如何使用其他语言来调用C语言库。... 第14章 GUI 编程实践 本章将讲解Linux桌面GUI的主流开发技术GTK+,基于该框架了解如何使用C语言开发 GUI应用,掌握如何实现跨平台的GUI应用程序开发(支持Windows/macOS/Linux),还将了解使用GTK+开发GUI程序的基本方法,包括如何创建Window,通过css来编辑控件样式,使用Glade快速完成UI布局等。最后我们将仿照macOS的计算器实现一个功能相对... 第15章 综合案例:桌面跨平台的下载工具 本章作为课程最后的综合案例,将带你从零开始开发一个桌面跨平台的下载工具,包括使用Conan管理依赖,使用GTK+开发UI,使用curl访问网络,使用sqlite来存储任务,使用独立的线程来承载下载任务等等。本章综合性较强,我们力求尽可能多地覆盖课程当中所学的知识,帮助大家进一步加深对C语言的认识和理解,培养使用C语言构建... 第16章 课程总结 本章作为课程的最后一章,我们将带你整体梳理课程所学的内容,并提供一些后续的学习建议,在课程问答区老师等着与你进一步交流。
    • 462